package upm.etsit.gsi.lejos.mazesolver.behaviours;

import java.io.File;
import java.util.Iterator;
import lejos.nxt.Button;
import lejos.nxt.LCD;
import lejos.nxt.Sound;
import lejos.nxt.addon.ColorSensor;
import lejos.robotics.subsumption.Behavior;

/**
 * Comportamiento que se activa cuando se detecta la finalización del laberinto
 * @author jrubia
 */
public class Win implements Behavior {

    /**
     * Sensor de color.
     */
    private ColorSensor color;

    /**
     * Mapeador
     */
    private Mapper mapper;

    /**
     * Constructor con parámetros
     * @param color
     * @param mapeador
     */
    public Win(ColorSensor color, Mapper mapper) {
        this.color = color;
        this.mapper = mapper;
    }

    /**
     * Toma el control cuando el sensor de color detecta Azul
     * @return True si el sensor de color detecta Azul
     */
    public boolean takeControl() {
        return this.color.getColorNumber() == 2;
    }

    /**
     * Cuando esta acción ha tomado el control, se limpia el LCD, se reproduce el fichero "yeah.wav" y se escribe por pantalla todas las coordenadas por las que el robot ha pasado.
     * Para finalizar, se espera hasta que un botón es pulsado, y se sale de la ejecución del programa.
     */
    public void action() {
        LCD.clear();
        File sound = new File("yeah.wav");
        Sound.playSample(sound, 100);

        Button.waitForPress();

        System.exit(0);
    }

    public void suppress() {
    }
}
